perm filename DRIVE.FAI[SYS,HE] blob sn#091455 filedate 1974-05-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE DRIVE
C00004 00003	DOIT:	MOVE 1,-1(17)
C00005 00004	PACK:	(INTEGER PTR,TIMEREFERENCE REAL SOLN)
C00007 00005	ACT:	HRLI MASTER
C00008 00006		THIS IS THE 32 WORD MAIL MESSAGE
C00009 00007	ISSERV:	0
C00011 ENDMK
C⊗;
	TITLE DRIVE
	INTERNAL DOIT,ARMPOS,ARM.JOINT,PACK,PSTRING
	INTERNAL HANDFN,ARMFN,ARMPROCEED
	EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
	EXTERNAL ARM.WAIT,FELT,STOP.ON,WAIT.STRING,TRANS.ARM
	EXTERNAL JOBAPR,UNDERF
	EXTERNAL ARM.MESSAGE,JOBSA

	BLUE←←0

	P←17
	MASTER←←16661
IFN BLUE,<MASTER←←MASTER+1>
	RELOC←←40
	TOUCH←←10
	HOLD←←20


ARM.JOINT:MOVEI 
	SKIPA
ARMPOS:	MOVEI 1
ONCE:	MOVE 1,ARM.VECTOR
	MOVEM 1,THETA
	MOVE 1,WAIT.STRING
	MOVEM 1,ETOR
	MOVE 1,TRANS.ARM
	HRLM 1,ETOR
	MOVE 1,FELT
	MOVEM 1,NERVES
	CALLI 1,30
	HRRM 1,SEGJOB
	CALLI 1,400021
	HRLM 1,SEGJOB
	MOVEI 1,ARM.STATUS
	MOVEM 1,STATUS
	MOVEI 1,ARM.SEG
	MOVEM 1,SEGMENT
	MOVEI 1,ARM.MOTION
	HRRM 1,NAME
	MOVEI 1,ARM.WAIT
	HRLM 1,NAME
	HRRZ 1,SEGJOB
	CALLI 1,24
	MOVE 3,[POINT 6,0,35]
	MOVE 4,[POINT 7,MYPPN-1,35]
	MOVEI 7,1
I5:	MOVEI 5,2
C7:	ILDB 6,3
	ADDI 6,40
	CAIE 6,40
	IDPB 6,4
	SOJGE 5,C7
	SOJGE 7,[MOVEI 6,"/"
		IDPB 6,4
		JRST I5]

	MOVEI 6,15
	IDPB 6,4
	MOVEI 6,12
	IDPB 6,4
	MOVE 1,[JRST ACTIT]
	MOVEM 1,ONCE
ACTIT:	MOVE 1,-1(P)
	MOVEM 1,SAVE.STRING
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)

REQU:
IFE BLUE,<SIXBIT/ARM-Y/>
IFN BLUE,<SIXBIT/ARM-B/>
	EXE
MYPPN:	0
	0


DOIT:	MOVE 1,-1(17)
	MOVEM 1,FILE
	MOVEM 1,ARM.WAIT
	MOVE 1,-2(17)
	HRRZM 1,BAND
	MOVEI 2
	MOVE 1,-3(P)
	JUMPN 1,.+2
	CALLI 1,400071
	MOVEM 1,PPPN
SEN1:	PUSHJ P,ACT
RETM:	SUB 17,[XWD 4,4]
	JRST @4(17)

ARMFN:	MOVEI 3+HOLD+RELOC
	HRL 1,ARM.ME
	HRRI 1,ARGS
	BLT 1,ARGS+24
	MOVE 1,-1(17)
	DPB 1,[POINT 9,0,26]
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)

HANDFN:	MOVEI 3+HOLD
	MOVE 1,ARM.ME
	MOVE 1,(1)
	MOVEM 1,ARGS
	JRST ACT

ARMPRO:	MOVE 1,-1(P)
	MOVEM 1,ARGS
	MOVEI 3
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)
PACK:	;(INTEGER PTR,TIME;REFERENCE REAL SOLN);
	MOVE 10,-3(P)
	MOVE 1,-2(P)
	MOVEM 1,(10)	;TIME
	HRLZ 5,-1(P)
	BLT 5,4		;PICK UP A0-A4
	MOVM 6,4	;WHERE THE LARGEST WILL END UP
	MOVEI 5,3
L1:	MOVM 7,(5)
	CAMGE 6,7
	MOVE 6,7
	SOJGE 5,L1
	TDZ 6,[XWD 777,777777]	;THE LARGEST IS NOW IN 6
	ADD 6,[XWD  12000,0]	;THE EXPONENT TO PUT FRACTION AND SIGN INTO RT. HALF
	HLLM 6,-1(10)
	UFA 6,4
	HRLM 7,-3(10)
	UFA 6,3
	HRRM 7,-3(10)
	UFA 6,2
	HRLM 7,-2(10)
	UFA 6,1
	HRRM 7,-2(10)
	UFA 6,0
	HRRM 7,-1(10)
	SUB P,[XWD 4,4]
	JRST @4(P)

PSTRING:	;(PTR,S)
	MOVE 1,[POINT 7,0,35]
	HRR 1,-1(P)	;POINTS TO LOC IN COEFF
	POP 16,3	;COUNT
	POP 16,2	;STRING POINTER
	HRLI 2,0	;CLEAR LH OF COUNT
	JUMPE 2,[
		SETZ 1,
		JRST PLB]
PL:	ILDB 4,3
	IDPB 4,1
	SOJG 2,PL
	MOVEI 4,0
	IDPB 4,1
	HRLI 1,0	;LAST WORD
	HRRZ 2,-1(P)	;FIRST WORD
	SUBI 1,(2)
PLB:	HRRZ 2,-1(P)
	MOVEM 1,(2)	;WORD COUNT
	SUB P,[XWD 2,2]
	JRST @2(P)


ACT:	HRLI MASTER
	SETZM ARM.STATUS
	SKIPE STOP.ON
	TRO TOUCH
	MOVEM EXE
	MOVE 1,ARM.WAIT
	MOVEM 1,ARM.MOTION
	SETZM ARM.WAIT
	CALL 1,[SIXBIT/INTENS/]
	MOVEM 1,ENBSAV#
	SETZ 1,
	CALL 1,[SIXBIT/INTENB/]		;TURN OFF INTERRUPTS
	MOVE 1,JOBAPR
	MOVEM 1,APRSAV#
	MOVEI 1,[CALL[SIXBIT/DISMIS/]]
	MOVEM 1,JOBAPR
	JSR ISSERV
	SEND REQU
	JRST[		MOVEI 1,2
			CALLI 1,31
			JRST .-1]
	HRLZI 1,40
	CALL 1,[SIXBIT/IENBW/]
	MOVE 1,APRSAV
	MOVEM 1,JOBAPR
	MOVE 1,ENBSAV
	CALL 1,[SIXBIT/INTENB/]
	SKIPE @WAIT.STRING
	OUTSTR @WAIT.STRING
	POPJ P,

;	THIS IS THE 32 WORD MAIL MESSAGE

EXE:	XWD MASTER,0	;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
			;0 READ IN OCTAL
			;1 READ IN DECIMAL
			;2 EXECUTE FILE
			;3 EXECUTE FUNCTION
FILE:	0
PPPN:	0
BAND:	0
SEGJOB:	0
NAME:	0
STATUS:	0
SEGMENT:0
NERVES:	0
ETOR:	0
THETA:	0
ARGS:	BLOCK =6
STRING:	BLOCK =14
SAVE.STRING:0
ISSERV:	0
SEE:	MOVE 1,REQU
	CALLI 1,400043
	JRST[	CAIE 1,1
		JRST[OUTSTR[ASCIZ/THERE ARE TOO MANY SERVOS ALREADY
PLEASE KILL THEM ALL BUT ONE AND TYPE RETURN
/]
			INCHWL
			INCHWL
			JRST SEE]
		PTYGET 10
		JRST[	OUTSTR[ASCIZ/NO PTYS AVAILABLE
/]
			CALLI 12]
		HRLI 10,0
		MOVEM 10,PTYLIN#
	GJ:	MOVEI 11,[ASCIZ/L
/]
		PTWRS7 10
	WH:	PTRD1W 10
		CAIE 11,"#"
		JRST[	CAIE 11,"?"
			JRST WH
			OUTSTR[ASCIZ\NO JOB FOR SERVO
TYPE C/R TO TRY AGAIN
\]
			INCHWL
			INCHWL
			JRST GJ]
		MOVEI 11,MYPPN
		PTWRS7 10
	WCC:	PTRD1W 10
		CAIE 11,"↑"
		JRST WCC
IFE BLUE,<
		MOVEI 11,[ASCIZ/R YELO
/]
>
IFN BLUE,<
		MOVEI 11,[ASCIZ/R BLU
/]
>
		PTWRS7 10
	WCC2:	PTRD1W 10
		CAIE 11,"!"
		JRST WCC2
		JRST @ISSERV]
GOTONE:	JRST @ISSERV

	END